์ธ๊ณ์์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ธ Git์ ๋ด๋ถ ์๋ ๋ฐฉ์์ ํ์ํฉ๋๋ค. ํจ์จ์ ์ธ ํ์ ๊ณผ ์ฝ๋ ๊ด๋ฆฌ๋ฅผ ์ํด Git ๊ฐ์ฒด, ์คํ ์ด์ง ์์ญ, ์ปค๋ฐ ํ์คํ ๋ฆฌ ๋ฑ์ ๋ฐฐ์๋ณด์ธ์.
๊น ๋ด๋ถ ๊ตฌ์กฐ ์ฌ์ธต ๋ถ์: ํจ๊ณผ์ ์ธ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ดํด
Git์ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์ฌ์ค์์ ๋ฒ์ ๊ด๋ฆฌ ํ์ค์ด ๋์์ผ๋ฉฐ, ์ ์ธ๊ณ ํ๋ค์ด ๋ณต์กํ ํ๋ก์ ํธ์์ ํจ๊ณผ์ ์ผ๋ก ํ์
ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ค์ add, commit, push, pull๊ณผ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ Git ๋ช
๋ น์ด์ ์ต์ํ์ง๋ง, Git์ ๊ทผ๋ณธ์ ์ธ ๋ฉ์ปค๋์ฆ์ ์ดํดํ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ์ํฌํ๋ก์ฐ๋ฅผ ์ต์ ํํ๋ฉฐ, Git์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ํ์ฉํ๋ ๋ฅ๋ ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด ๊ธ์์๋ Git์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊น์ด ํ๊ณ ๋ค์ด ์ด ๊ฐ๋ ฅํ ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์ ๊ตฌ๋ํ๋ ํต์ฌ ๊ฐ๋
๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ํฉ๋๋ค.
Git ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ดํดํด์ผ ํ๋ ์ด์
๊ธฐ์ ์ ์ธ ์ธ๋ถ ์ฌํญ์ ๋ค์ด๊ฐ๊ธฐ ์ ์, Git ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ ์ ์ตํ์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค:
- ๋ฌธ์ ํด๊ฒฐ: ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋(๊ทธ๋ฆฌ๊ณ ํ์ฐ์ ์ผ๋ก ๋ฐ์ํ ๊ฒ์
๋๋ค), ๋ ๊น์ ์ดํด๋ ๋ฌธ์ ๋ฅผ ๋ ํจ๊ณผ์ ์ผ๋ก ์ง๋จํ๊ณ ํด๊ฒฐํ ์ ์๊ฒ ํด์ค๋๋ค. ์๋ฅผ ๋ค์ด, Git์ด ๊ฐ์ฒด๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ๋์ง ์๋ฉด
git prune์ด๋git gc์ ๊ฐ์ ๋ช ๋ น์ด์ ์ํฅ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - ์ํฌํ๋ก์ฐ ์ต์ ํ: Git์ด ๋ธ๋์น์ ๋ณํฉ์ ์ด๋ป๊ฒ ๊ด๋ฆฌํ๋์ง ํ์ ํจ์ผ๋ก์จ, ํ์ ์๊ตฌ์ ๋ง๋ ๋ ํจ์จ์ ์ด๊ณ ๊ฐ์ํ๋ ์ํฌํ๋ก์ฐ๋ฅผ ์ค๊ณํ ์ ์์ต๋๋ค. ๋ํ ํ (hook)์ ์ฌ์ฉํ์ฌ Git์ ๋ง์ถค ์ค์ ํ์ฌ ์์ ์ ์๋ํํ๊ณ , ๊ฐ๋ฐ ํ์ค์ด ํญ์ ์ถฉ์กฑ๋๋๋ก ํ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ํ๋: Git์ด ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ๊ณ ๊ฒ์ํ๋์ง ์ดํดํ๋ฉด ๋๊ท๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ๋ ๋ณต์กํ ํ๋ก์ ํธ์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ธ์ ์ด๋ป๊ฒ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฌํจํน(repack)ํด์ผ ํ๋์ง ์๋ฉด ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ๊ณ ๊ธ ์ฌ์ฉ๋ฒ: Git์ ๋ฆฌ๋ฒ ์ด์ค(rebasing), ์ฒด๋ฆฌํฝ(cherry-picking), ๊ณ ๊ธ ๋ธ๋์นญ ์ ๋ต ๋ฑ ๋ค์ํ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๊ธฐ์ ์ ๋ง์คํฐํ๋ ค๋ฉด Git ๋ด๋ถ ๊ตฌ์กฐ์ ๋ํ ํ์คํ ์ดํด๊ฐ ํ์์ ์ ๋๋ค.
- ๋ ๋์ ํ์ : ํ์ ๋ชจ๋ ๊ตฌ์ฑ์์ด ๋ด๋ถ์์ ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ ํ๊ณ ์์ผ๋ฉด, ์์ฌ์ํต ์ค๋ฅ๊ฐ ํฌ๊ฒ ์ค์ด๋ญ๋๋ค. ์ด๋ฌํ ํฅ์๋ ์ดํด๋ ํจ์จ์ฑ ์ฆ๊ฐ์ ๋๋ฒ๊น ์๊ฐ ๊ฐ์๋ก ์ด์ด์ง๋๋ค.
Git ๋ด๋ถ ๊ตฌ์กฐ์ ํต์ฌ ๊ตฌ์ฑ ์์
Git์ ๋ด๋ถ ์ํคํ ์ฒ๋ ๋ช ๊ฐ์ง ํต์ฌ ๊ตฌ์ฑ ์์๋ฅผ ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
- Git ๊ฐ์ฒด(Objects): ์ด๊ฒ๋ค์ Git์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์๋ก, ๋ฐ์ดํฐ๋ฅผ ๋ด์ฉ ์ฃผ์ ์ง์ ๊ฐ๋ฅ ๊ฐ์ฒด๋ก ์ ์ฅํฉ๋๋ค.
- ์คํ ์ด์ง ์์ญ(Staging Area, ์ธ๋ฑ์ค): ๋ค์ ์ปค๋ฐ์ ์ํด ๋ณ๊ฒฝ ์ฌํญ์ ์ค๋นํ๋ ์์ ์์ญ์ ๋๋ค.
- ์ปค๋ฐ ํ์คํ ๋ฆฌ(Commit History): ํ๋ก์ ํธ์ ์ด๋ ฅ์ ๋ํ๋ด๋ ๋ฐฉํฅ์ฑ ๋น์ํ ๊ทธ๋ํ(DAG)์ ๋๋ค.
- ๋ธ๋์น์ ํ๊ทธ(Branches and Tags): ํน์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ก, ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ํ์ํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
- ์์ ๋๋ ํ ๋ฆฌ(Working Directory): ๋ณ๊ฒฝ ์์ ์ ์ํํ๋ ๋ก์ปฌ ๋จธ์ ์ ํ์ผ๋ค์ ๋๋ค.
Git ๊ฐ์ฒด: ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์
Git์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ์ ์ฅํฉ๋๋ค. ๊ฐ์ฒด์๋ ๋ค ๊ฐ์ง ์ฃผ์ ์ ํ์ด ์์ต๋๋ค:
- ๋ธ๋กญ(Blob - Binary Large Object): ํ์ผ์ ๋ด์ฉ์ ๋ํ๋ ๋๋ค.
- ํธ๋ฆฌ(Tree): ๋๋ ํ ๋ฆฌ๋ฅผ ๋ํ๋ด๋ฉฐ, ๋ธ๋กญ(ํ์ผ) ๋ฐ ๋ค๋ฅธ ํธ๋ฆฌ(ํ์ ๋๋ ํ ๋ฆฌ)์ ๋ํ ์ฐธ์กฐ๋ฅผ ํฌํจํฉ๋๋ค.
- ์ปค๋ฐ(Commit): ํน์ ์์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ค๋ ์ท์ ๋ํ๋ด๋ฉฐ, ์์ฑ์, ์ปค๋ฏธํฐ, ์ปค๋ฐ ๋ฉ์์ง์ ๊ฐ์ ๋ฉํ๋ฐ์ดํฐ์ ๋ฃจํธ ํธ๋ฆฌ ๋ฐ ๋ถ๋ชจ ์ปค๋ฐ์ ๋ํ ์ฐธ์กฐ๋ฅผ ํฌํจํฉ๋๋ค.
- ํ๊ทธ(Tag): ํน์ ์ปค๋ฐ์ ๋ํ ์ด๋ฆ ์๋ ์ฐธ์กฐ์ ๋๋ค.
๊ฐ ๊ฐ์ฒด๋ ๊ณ ์ ํ SHA-1 ํด์๋ก ์๋ณ๋๋ฉฐ, ์ด ํด์๋ ๊ฐ์ฒด์ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค. ์ด ๋ด์ฉ ์ฃผ์ ์ง์ ๋ฐฉ์ ์ ์ฅ์๋ Git์ด ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ฐ์งํ๊ณ ์ ์ฅํ์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
์์: ๋ธ๋กญ ๊ฐ์ฒด ์์ฑํ๊ธฐ
hello.txt๋ผ๋ ์ด๋ฆ์ ํ์ผ์ "Hello, world!\n"๋ผ๋ ๋ด์ฉ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ด
์๋ค. Git์ ์ด ๋ด์ฉ์ ๋ํ๋ด๋ ๋ธ๋กญ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ๋ธ๋กญ ๊ฐ์ฒด์ SHA-1 ํด์๋ ๊ฐ์ฒด ์ ํ ๋ฐ ํฌ๊ธฐ๋ฅผ ํฌํจํ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
echo "Hello, world!" | git hash-object -w --stdin
์ด ๋ช
๋ น์ด๋ ๋ธ๋กญ ๊ฐ์ฒด์ SHA-1 ํด์๋ฅผ ์ถ๋ ฅํ๋ฉฐ, d5b94b86b244e12a8b9964eb39edef2636b5874b์ ๊ฐ์ ํํ์ผ ์ ์์ต๋๋ค. -w ์ต์
์ Git์๊ฒ ๊ฐ์ฒด๋ฅผ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋๋ก ์ง์ํฉ๋๋ค.
์คํ ์ด์ง ์์ญ (์ธ๋ฑ์ค): ์ปค๋ฐ ์ค๋นํ๊ธฐ
์คํ ์ด์ง ์์ญ์ ์ธ๋ฑ์ค๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ์์ ๋๋ ํ ๋ฆฌ์ Git ๋ฆฌํฌ์งํ ๋ฆฌ ์ฌ์ด์ ์์นํ ์์ ์์ญ์ ๋๋ค. ์ด๊ณณ์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํ๊ธฐ ์ ์ ์ค๋นํฉ๋๋ค.
git add๋ฅผ ์คํํ๋ฉด ์์
๋๋ ํ ๋ฆฌ์ ๋ณ๊ฒฝ ์ฌํญ์ ์คํ
์ด์ง ์์ญ์ ์ถ๊ฐํ๋ ๊ฒ์
๋๋ค. ์คํ
์ด์ง ์์ญ์๋ ๋ค์ ์ปค๋ฐ์ ํฌํจ๋ ํ์ผ ๋ชฉ๋ก์ด ๋ค์ด ์์ต๋๋ค.
์์: ์คํ ์ด์ง ์์ญ์ ํ์ผ ์ถ๊ฐํ๊ธฐ
git add hello.txt
์ด ๋ช
๋ น์ด๋ hello.txt ํ์ผ์ ์คํ
์ด์ง ์์ญ์ ์ถ๊ฐํฉ๋๋ค. Git์ ํ์ผ ๋ด์ฉ์ ๋ํ ๋ธ๋กญ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์คํ
์ด์ง ์์ญ์ ํด๋น ๋ธ๋กญ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
git status ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์คํ
์ด์ง ์์ญ์ ๋ด์ฉ์ ๋ณผ ์ ์์ต๋๋ค.
์ปค๋ฐ ํ์คํ ๋ฆฌ: ๋ฐฉํฅ์ฑ ๋น์ํ ๊ทธ๋ํ (DAG)
์ปค๋ฐ ํ์คํ ๋ฆฌ๋ Git ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ํต์ฌ์ ๋๋ค. ๊ฐ ๋ ธ๋๊ฐ ์ปค๋ฐ์ ๋ํ๋ด๋ ๋ฐฉํฅ์ฑ ๋น์ํ ๊ทธ๋ํ(DAG)์ ๋๋ค. ๊ฐ ์ปค๋ฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ๊ณ ์ ํ SHA-1 ํด์
- ๋ฃจํธ ํธ๋ฆฌ์ ๋ํ ์ฐธ์กฐ (ํด๋น ์ปค๋ฐ ์์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ํ๋ฅผ ๋ํ๋)
- ๋ถ๋ชจ ์ปค๋ฐ์ ๋ํ ์ฐธ์กฐ (ํ๋ก์ ํธ์ ์ด๋ ฅ์ ๋ํ๋)
- ์์ฑ์ ๋ฐ ์ปค๋ฏธํฐ ์ ๋ณด (์ด๋ฆ, ์ด๋ฉ์ผ, ํ์์คํฌํ)
- ์ปค๋ฐ ๋ฉ์์ง
์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ํตํด ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๊ณ , ์ด์ ๋ฒ์ ์ผ๋ก ๋๋๋ฆฌ๋ฉฐ, ๋์ผํ ํ๋ก์ ํธ์์ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ํ์ ํ ์ ์์ต๋๋ค.
์์: ์ปค๋ฐ ์์ฑํ๊ธฐ
git commit -m "Add hello.txt file"
์ด ๋ช ๋ น์ด๋ ์คํ ์ด์ง ์์ญ์ ๋ณ๊ฒฝ ์ฌํญ์ ํฌํจํ๋ ์ ์ปค๋ฐ์ ์์ฑํฉ๋๋ค. Git์ ์ด ์์ ์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ํ๋ฅผ ๋ํ๋ด๋ ํธ๋ฆฌ ๊ฐ์ฒด์ ํด๋น ํธ๋ฆฌ ๊ฐ์ฒด ๋ฐ ๋ถ๋ชจ ์ปค๋ฐ(ํด๋น ๋ธ๋์น์ ์ด์ ์ปค๋ฐ)์ ์ฐธ์กฐํ๋ ์ปค๋ฐ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
git log ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
๋ธ๋์น์ ํ๊ทธ: ์ปค๋ฐ ํ์คํ ๋ฆฌ ํ์ํ๊ธฐ
๋ธ๋์น์ ํ๊ทธ๋ ์ปค๋ฐ ํ์คํ ๋ฆฌ์ ํน์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ ๋๋ค. ์ด๊ฒ๋ค์ ํ๋ก์ ํธ์ ์ด๋ ฅ์ ๊ตฌ์ฑํ๊ณ ํ์ํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๋ธ๋์น๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ํฌ์ธํฐ๋ก, ๋ค๋ฅธ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋๋ก ์ด๋ํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด๋ ๋ฒ๊ทธ ์์ ์ ์ํ ์์ ์ ๊ฒฉ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
ํ๊ทธ๋ ๋ถ๋ณ์ ํฌ์ธํฐ๋ก, ํญ์ ๋์ผํ ์ปค๋ฐ์ ๊ฐ๋ฆฌํต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํน์ ๋ฆด๋ฆฌ์ค๋ ๋ง์ผ์คํค์ ํ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์์: ๋ธ๋์น ์์ฑํ๊ธฐ
git branch feature/new-feature
์ด ๋ช
๋ น์ด๋ ํ์ฌ ๋ธ๋์น(๋ณดํต main ๋๋ master)์ ๋์ผํ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ feature/new-feature๋ผ๋ ์ด๋ฆ์ ์ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค.
์์: ํ๊ทธ ์์ฑํ๊ธฐ
git tag v1.0
์ด ๋ช
๋ น์ด๋ ํ์ฌ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ v1.0์ด๋ผ๋ ์ด๋ฆ์ ์ ํ๊ทธ๋ฅผ ์์ฑํฉ๋๋ค.
์์ ๋๋ ํ ๋ฆฌ: ๋ก์ปฌ ํ์ผ
์์ ๋๋ ํ ๋ฆฌ๋ ํ์ฌ ์์ ์ค์ธ ๋ก์ปฌ ๋จธ์ ์ ํ์ผ ์งํฉ์ ๋๋ค. ์ด๊ณณ์์ ํ์ผ์ ๋ณ๊ฒฝํ๊ณ ์ปค๋ฐ์ ์ํด ์ค๋นํฉ๋๋ค.
Git์ ์์ ๋๋ ํ ๋ฆฌ์์ ์ด๋ฃจ์ด์ง๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ์ฌ ํด๋น ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ๊ฒ ์คํ ์ด์งํ๊ณ ์ปค๋ฐํ ์ ์๋๋ก ํฉ๋๋ค.
๊ณ ๊ธ ๊ฐ๋ ๋ฐ ๋ช ๋ น์ด
Git ๋ด๋ถ ๊ตฌ์กฐ์ ๋ํ ํ์คํ ์ดํด๋ฅผ ๊ฐ์ถ๋ฉด ๋ ๊ณ ๊ธ ๊ฐ๋ ๊ณผ ๋ช ๋ น์ด๋ฅผ ํ์ํ ์ ์์ต๋๋ค:
- ๋ฆฌ๋ฒ ์ด์ค(Rebasing): ๋ ๊นจ๋ํ๊ณ ์ ํ์ ์ธ ํ์คํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์ฌ์์ฑํ๋ ๊ฒ.
- ์ฒด๋ฆฌํฝ(Cherry-picking): ํ ๋ธ๋์น์ ํน์ ์ปค๋ฐ์ ๋ค๋ฅธ ๋ธ๋์น์ ์ ์ฉํ๋ ๊ฒ.
- ๋ํํ ์คํ ์ด์ง(Interactive Staging): ์ ์ฒด ํ์ผ ๋์ ํ์ผ์ ํน์ ๋ถ๋ถ๋ง ์คํ ์ด์งํ๋ ๊ฒ.
- Git ํ (Hooks): ์ปค๋ฐ์ด๋ ํธ์์ ๊ฐ์ ํน์ Git ์ด๋ฒคํธ ์ ํ์ ์๋์ผ๋ก ์คํ๋๋ ์คํฌ๋ฆฝํธ.
- ์๋ธ๋ชจ๋ ๋ฐ ์๋ธํธ๋ฆฌ(Submodules and Subtrees): ๋ค๋ฅธ Git ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๊ฒ.
- Git LFS (Large File Storage): ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋น๋ํ๊ฒ ๋ง๋ค์ง ์๊ณ Git์์ ๋์ฉ๋ ํ์ผ์ ๊ด๋ฆฌํ๋ ๊ฒ.
์ค์ฉ์ ์ธ ์์ ๋ฐ ์๋๋ฆฌ์ค
Git ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ด๋ป๊ฒ ๋์์ด ๋๋์ง ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
- ์๋๋ฆฌ์ค: ์์ง ์ปค๋ฐ๋์ง ์์ ํ์ผ์ ์ค์๋ก ์ญ์ ํ์ต๋๋ค.
ํด๊ฒฐ์ฑ
:
git fsck --lost-found๋ฅผ ์ฌ์ฉํ์ฌ ์์ด๋ฒ๋ฆฐ ๋ธ๋กญ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ณ ํ์ผ์ ๋ณต๊ตฌํฉ๋๋ค. - ์๋๋ฆฌ์ค: ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์ฌ์์ฑํ๊ณ ์ถ์ต๋๋ค.
ํด๊ฒฐ์ฑ
:
git filter-branch๋๋git rebase -i๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋ฐ ํ์คํ ๋ฆฌ๋ฅผ ์ฌ์์ฑํ๊ณ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ด๋ ํ์คํ ๋ฆฌ๋ฅผ ์ฌ์์ฑํ๋ฏ๋ก ํ๋ ฅ์์๊ฒ ์ํฅ์ ์ค ์ ์๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค. - ์๋๋ฆฌ์ค: ๋๊ท๋ชจ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ ์ถ์ต๋๋ค.
ํด๊ฒฐ์ฑ
:
git gc --prune=now --aggressive๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฌํจํนํ๊ณ ๋ถํ์ํ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํฉ๋๋ค. - ์๋๋ฆฌ์ค: ์ฝ๋ ํ์ง ๋ฌธ์ ๋ฅผ ์๋์ผ๋ก ํ์ธํ๋ ์ฝ๋ ๋ฆฌ๋ทฐ ํ๋ก์ธ์ค๋ฅผ ๊ตฌํํ๊ณ ์ถ์ต๋๋ค. ํด๊ฒฐ์ฑ : Git ํ ์ ์ฌ์ฉํ์ฌ ์ปค๋ฐ์ด ๋ฉ์ธ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ํธ์๋๊ธฐ ์ ์ ๋ฆฐํฐ ๋ฐ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ฅผ ์คํํฉ๋๋ค.
๋ถ์ฐ ํ์ ์ํ Git: ๊ธ๋ก๋ฒ ๊ด์
Git์ ๋ถ์ฐ์ ์ธ ํน์ฑ์ ๋ค๋ฅธ ์๊ฐ๋์ ์์น์์ ์์ ํ๋ ๊ธ๋ก๋ฒ ํ์ ์ด์์ ์ ๋๋ค. ๋ถ์ฐ ํ๊ฒฝ์์ Git์ ์ฌ์ฉํ๋ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ช ํํ ๋ธ๋์นญ ์ ๋ต ์๋ฆฝ: Gitflow๋ GitHub Flow์ ๊ฐ์ ์ ์ ์๋ ๋ธ๋์นญ ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ฅ ๊ฐ๋ฐ, ๋ฒ๊ทธ ์์ ๋ฐ ๋ฆด๋ฆฌ์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- ์ฝ๋ ๋ฆฌ๋ทฐ์ ํ ๋ฆฌํ์คํธ(Pull Request) ์ฌ์ฉ: ๋ชจ๋ ์ฝ๋ ๋ณ๊ฒฝ์ ๋ํด ํ์๋ค์ด ํ ๋ฆฌํ์คํธ๋ฅผ ์ฌ์ฉํ๋๋ก ์ฅ๋ คํ์ฌ ๋ณํฉ ์ ์ ์ฒ ์ ํ ์ฝ๋ ๋ฆฌ๋ทฐ์ ํ ๋ก ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ํจ๊ณผ์ ์ธ ์์ฌ์ํต: Slack์ด๋ Microsoft Teams์ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ ๋ ธ๋ ฅ์ ์กฐ์จํ๊ณ ์ถฉ๋์ ํด๊ฒฐํฉ๋๋ค.
- CI/CD๋ก ์์ ์๋ํ: ์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ(CI/CD) ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ์ฌ ํ ์คํธ, ๋น๋ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ฌ ์ฝ๋ ํ์ง๊ณผ ๋ ๋น ๋ฅธ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ์๊ฐ๋ ๊ณ ๋ ค: ๋ค๋ฅธ ์๊ฐ๋๋ฅผ ์์ฉํ ์ ์๋๋ก ํ์ ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ ์ผ์ ์ ์ก์ต๋๋ค.
- ๋ชจ๋ ๊ฒ ๋ฌธ์ํ: ๋ธ๋์นญ ์ ๋ต, ์ฝ๋ฉ ํ์ค ๋ฐ ๋ฐฐํฌ ์ ์ฐจ๋ฅผ ํฌํจํ ํ๋ก์ ํธ์ ํฌ๊ด์ ์ธ ๋ฌธ์๋ฅผ ์ ์งํฉ๋๋ค.
๊ฒฐ๋ก : ์์ฐ์ฑ ํฅ์์ ์ํ Git ๋ด๋ถ ๊ตฌ์กฐ ๋ง์คํฐํ๊ธฐ
Git ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๊ฒ์ ๋จ์ํ ํ๋ฌธ์ ์ธ ์ฐ์ต์ด ์๋๋๋ค. ์ด๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์๋ก์ ์์ฐ์ฑ๊ณผ ํจ์จ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋ ์ค์ฉ์ ์ธ ๊ธฐ์ ์ ๋๋ค. Git์ ๊ตฌ๋ํ๋ ํต์ฌ ๊ฐ๋ ๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํ์ ํจ์ผ๋ก์จ ๋ฌธ์ ๋ฅผ ๋ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ๊ณ , ์ํฌํ๋ก์ฐ๋ฅผ ์ต์ ํํ๋ฉฐ, Git์ ๋ชจ๋ ์ ์ฌ๋ ฅ์ ํ์ฉํ ์ ์์ต๋๋ค. ์๊ท๋ชจ ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋๊ท๋ชจ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ , Git์ ๋ํ ๋ ๊น์ ์ดํด๋ ์์ฌํ ์ฌ์ง ์์ด ๊ธ๋ก๋ฒ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ปค๋ฎค๋ํฐ์ ๋ ๊ฐ์น ์๊ณ ํจ์จ์ ์ธ ๊ธฐ์ฌ์๊ฐ ๋๊ฒ ํ ๊ฒ์ ๋๋ค.
์ด ์ง์์ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค๊ณผ ์ํํ๊ฒ ํ์ ํ์ฌ ๋๋ฅ๊ณผ ๋ฌธํ๋ฅผ ์์ฐ๋ฅด๋ ํ๋ก์ ํธ์ ๊ธฐ์ฌํ ์ ์๋ ํ์ ์ค๋๋ค. ๋ฐ๋ผ์ Git์ ํ์ ๋ฐ์๋ค์ด๋ ๊ฒ์ ๋จ์ง ๋๊ตฌ๋ฅผ ๋ง์คํฐํ๋ ๊ฒ์ด ์๋๋ผ, ๊ธ๋ก๋ฒ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ํ๊ณ์ ๋ ํจ๊ณผ์ ์ด๊ณ ํ๋ ฅ์ ์ธ ๊ตฌ์ฑ์์ด ๋๋ ๊ฒ์ ๋๋ค.